package com.sromku.bugsnag.actions;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
import com.sromku.bugsnag.Activator;
import com.sromku.bugsnag.api.Api;
import com.sromku.bugsnag.dialog.BugDetailsDialog;
import com.sromku.bugsnag.model.Error;
import com.sromku.bugsnag.model.Event;
import com.sromku.bugsnag.model.Project;
import com.sromku.bugsnag.preferences.PreferencesManager;
import com.sromku.bugsnag.views.BugsnagView;
public class DetailsAction implements IViewActionDelegate {
private BugsnagView view;
private Error error;
@Override
public void run(IAction action) {
IStructuredSelection selection = (IStructuredSelection) view.getViewer().getSelection();
if (selection != null) {
if (selection.getFirstElement() != null) {
error = (Error) selection.getFirstElement();
if (error != null) {
Job job = new Job("Fetching full error details") {
@Override
protected IStatus run(IProgressMonitor monitor) {
Project project = PreferencesManager.getDefaultProject();
Api network = Api.getInstance();
final List<Event> events = network.getEvents(project.account.authToken, error.id);
error.events = events;
Activator.runOnUIThread(new Runnable() {
@Override
public void run() {
BugDetailsDialog bugDetailsDialog = new BugDetailsDialog(view.getViewSite().getShell(), error);
bugDetailsDialog.open();
}
});
return Status.OK_STATUS;
}
};
job.setUser(true);
job.schedule();
}
}
}
}
@Override
public void selectionChanged(IAction action, ISelection selection) {
}
@Override
public void init(IViewPart viewPart) {
view = (BugsnagView) viewPart;
}
}